import request from "@/utils/request";

const BRAND_BASE_URL = "/api/v1/brand";

const BrandAPI = {
    /** 获取商品销售品牌数据分页数据 */
    getPage(queryParams?: BrandPageQuery) {
        return request<any, PageResult<BrandPageVO[]>>({
            url: `${BRAND_BASE_URL}/page`,
            method: "get",
            params: queryParams,
        });
    },
    /**
     * 获取商品销售品牌数据表单数据
     *
     * @param id 商品销售品牌数据ID
     * @returns 商品销售品牌数据表单数据
     */
    getFormData(id: number) {
        return request<any, BrandForm>({
            url: `${BRAND_BASE_URL}/${id}/form`,
            method: "get",
        });
    },

    /**
     *  添加商品销售品牌数据
     *
     *  @param data 商品销售品牌数据表单数据
     */
    add(data: BrandForm) {
        return request({
            url: `${BRAND_BASE_URL}`,
            method: "post",
            data: data,
        });
    },

    /**
     * 更新商品销售品牌数据
     *
     * @param id 商品销售品牌数据ID
     * @param data 商品销售品牌数据表单数据
     */
     update(id: number, data: BrandForm) {
        return request({
            url: `${BRAND_BASE_URL}/${id}`,
            method: "put",
            data: data,
        });
    },

    /**
     * 批量删除商品销售品牌数据，多个以英文逗号(,)分割
     *
     * @param ids 商品销售品牌数据ID字符串，多个以英文逗号(,)分割
     */
     deleteByIds(ids: string) {
        return request({
            url: `${BRAND_BASE_URL}/${ids}`,
            method: "delete",
        });
    },

    /**
     * 导出品牌数据Excel
     *
     * @param queryParams 查询参数
     * @returns Excel文件流
     */
    exportExcel(queryParams?: BrandPageQuery) {
        return request({
            url: `${BRAND_BASE_URL}/export`,
            method: "get",
            params: queryParams,
            responseType: "blob",
        });
    },

    /**
     * 导入品牌数据Excel
     *
     * @param file Excel文件
     * @returns 导入结果
     */
    importExcel(file: File) {
        const formData = new FormData();
        formData.append("file", file);
        return request<any, ExcelResult>({
            url: `${BRAND_BASE_URL}/import`,
            method: "post",
            data: formData,
            headers: {
                "Content-Type": "multipart/form-data",
            },
        });
    },

    /**
     * 下载品牌数据导入模板
     *
     * @returns Excel模板文件流
     */
    downloadTemplate() {
        return request({
            url: `${BRAND_BASE_URL}/template`,
            method: "get",
            responseType: "blob",
        });
    }
}

export default BrandAPI;

/** 商品销售品牌数据分页查询参数 */
export interface BrandPageQuery extends PageQuery {
}

/** 商品销售品牌数据表单对象 */
export interface BrandForm {
    /** 主键 */
    id?:  number;
    /** 时间周期 */
    timePeriod?:  string;
    /** 所属品牌 */
    brandName?:  string;
    /** 所属一级类目 */
    firstCategory?:  string;
    /** 所属二级类目 */
    secondCategory?:  string;
    /** 所属三级类目 */
    thirdCategory?:  string;
    /** 经营模式 */
    operationMode?:  string;
    /** 浏览量 */
    pageViews?:  number;
    /** 访客数 */
    visitorCount?:  number;
    /** 人均浏览量 */
    avgPageViewsPerVisitor?:  number;
    /** 平均停留时长 */
    avgStayTime?:  number;
    /** 成交人数 */
    transactionUserCount?:  number;
    /** 成交转化率 */
    conversionRate?:  number;
    /** 成交单量 */
    transactionOrderCount?:  number;
    /** 成交商品件数 */
    transactionItemCount?:  number;
    /** 成交金额 */
    transactionAmount?:  number;
    /** 成交客单价 */
    averageTransactionValue?:  number;
    /** 创建时间 */
    createTime?:  Date;
    /** 更新时间 */
    updateTime?:  Date;
    /** 删除标记(0:正常 1:删除) */
    isDeleted?:  number;
}

/** 商品销售品牌数据分页对象 */
export interface BrandPageVO {
    /** 主键 */
    id?: number;
    /** 时间周期 */
    timePeriod?: string;
    /** 所属品牌 */
    brandName?: string;
    /** 所属一级类目 */
    firstCategory?: string;
    /** 所属二级类目 */
    secondCategory?: string;
    /** 所属三级类目 */
    thirdCategory?: string;
    /** 经营模式 */
    operationMode?: string;
    /** 浏览量 */
    pageViews?: number;
    /** 访客数 */
    visitorCount?: number;
    /** 人均浏览量 */
    avgPageViewsPerVisitor?: number;
    /** 平均停留时长 */
    avgStayTime?: number;
    /** 成交人数 */
    transactionUserCount?: number;
    /** 成交转化率 */
    conversionRate?: number;
    /** 成交单量 */
    transactionOrderCount?: number;
    /** 成交商品件数 */
    transactionItemCount?: number;
    /** 成交金额 */
    transactionAmount?: number;
    /** 成交客单价 */
    averageTransactionValue?: number;
    /** 创建时间 */
    createTime?: Date;
    /** 更新时间 */
    updateTime?: Date;
    /** 删除标记(0:正常 1:删除) */
    isDeleted?: number;
}
